package com.sinosoft.front;

import java.net.MalformedURLException;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import com.sinosoft.front.dto.common.xsd.TxInsuranceRequestEhm;
import com.sinosoft.front.dto.common.xsd.TxInsuranceRequestExtensionEhm;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.ApplicantTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.CarDeviceTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.CarDriverTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.CarShipTaxTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.CarTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.InsuredTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.ItemKindTmp;
import com.sinosoft.front.dto.provisionalTmpSave.xsd.MainTmp;
import com.sinosoft.front.dto.xsd.ProvisionalTmpSaveRequest;
import com.sinosoft.front.dto.xsd.ProvisionalTmpSaveResponse;
import com.sinosoft.front.service.ProvisionalTmpSaveServicePortType;
import com.sinosoft.front.service.ProvisionalTmpSaveServicePortTypeProxy;

public class ProvisionalTmpSaveTest {

	public static void main(String[] args) throws RemoteException,
			ServiceException, MalformedURLException {
		// 调用服务器端方法 保单详细信息查询服务
		ProvisionalTmpSaveServicePortTypeProxy proxy = new ProvisionalTmpSaveServicePortTypeProxy();
		proxy.setEndpoint("http://proxy.tuxing51.com/frontServiceCenter/services/ProvisionalTmpSaveService?wsdl");
		ProvisionalTmpSaveServicePortType portType = proxy
				.getProvisionalTmpSaveServicePortType();

		ProvisionalTmpSaveRequest request = new ProvisionalTmpSaveRequest();
		// 请求头信息
		TxInsuranceRequestEhm requestEhm = new TxInsuranceRequestEhm();
		//requestEhm.setTransExeDate(MyTimeUtil.getCurrentDate());
		//requestEhm.setTransExeTime(MyTimeUtil.getCurrentTime());
		request.setTxInsuranceRequestEhm(requestEhm);

		// requestEhm.setIinsuranceExtensionEhm(new IinsuranceExtensionEhm());

		// 请求头数据
		TxInsuranceRequestExtensionEhm extensionEhm = new TxInsuranceRequestExtensionEhm();
		extensionEhm.setOperator("HN1_Test");
		extensionEhm.setOperatorKey("123456");
		request.setTxInsuranceRequestExtensionEhm(extensionEhm);

		// 入口参数
		// 暂存主信息
		MainTmp mainTmp = new MainTmp();
		mainTmp.setPolicySort("HN1");//系统来源
		mainTmp.setBusinessNature("2");//业务来源  专业代理
		mainTmp.setAgentCode("1234567899");//代理人代码
		mainTmp.setFranchiserCode("4105979018");//经销商代码
		mainTmp.setRelationFlag("1");//关联投保标识
		mainTmp.setStartDate("2017-03-25");//商业险起保日期
		mainTmp.setStartHour("0");//商业险起保小时
		mainTmp.setEndDate("2018-03-24");//商业险终保日期
		mainTmp.setEndHour("24");//商业险终保小时
		mainTmp.setBzStartDate("2017-03-25");//交强险起保日期
		mainTmp.setBzStartHour("0");//交强险起保小时
		mainTmp.setBzEndDate("2018-03-24");//交强险终保日期
		mainTmp.setBzEndHour("24");//交强险终保小时
		request.setMainTmp(mainTmp);
		
		//暂存投保人信息ApplicantTmp
		/**
		 * 1.2.1.2.	暂存投保人信息ApplicantTmp
要素名称	要素代码	数据类型	是否
必录	备注
投保人姓名	AppliName	VARCHAR2(120)	Y	
客户类型	InsuredType	VARCHAR2(2)	Y	1-个人，2-单位
证件类型	IdentifyType	VARCHAR2(2)	Y	码表

证件号码	IdentifyNumber	VARCHAR2(20)	Y	
家庭地址	AddressName	VARCHAR2(255)	N	
联系地址	PostAddress	VARCHAR2(255)	N	
邮政编码	PostCode	VARCHAR2(6)	N	
固定电话	Phone	VARCHAR2(30)	N	
手机号码	Mobile	VARCHAR2(15)	Y	
电子邮箱	Email	VARCHAR2(30)	N	

		 */
        ApplicantTmp applicantTmp = new ApplicantTmp();
        applicantTmp.setAppliName("吴静菡");//投保人姓名
        applicantTmp.setInsuredType("1");//客户类型
        applicantTmp.setIdentifyType("01");//证件类型
        applicantTmp.setIdentifyNumber("410725199412015720");//证件号码
        applicantTmp.setMobile("15516990860");//手机号
        request.setApplicantTmp(applicantTmp);
        
        //暂存关系人信息列表InsuredTmpArr
        //暂存关系人信息 InsuredTmp
        InsuredTmp insuredTmp = new InsuredTmp();
        /**
         * 关系人标识位	InsuredFlag	VARCHAR2(2)	Y	1-被保险人，5-车主
关系人姓名	InsuredName	VARCHAR2(120)	Y	
客户类型	InsuredType	VARCHAR2(2)	Y	1-个人，2-单位
证件类型	IdentifyType	VARCHAR2(2)	Y	码表

证件号码	IdentifyNumber	VARCHAR2(20)	Y	
家庭地址	AddressName	VARCHAR2(255)	N	
联系地址	PostAddress	VARCHAR2(255)	N	
邮政编码	PostCode	VARCHAR2(6)	N	
固定电话	Phone	VARCHAR2(30)	N	
手机号码	Mobile	VARCHAR2(15)	Y	
电子邮箱	Email	VARCHAR2(30)	N	

         */
        insuredTmp.setInsuredFlag("5");//关系人标识 1-被保险人， 5-车主
        insuredTmp.setInsuredName("吴静菡");//关系人姓名
        insuredTmp.setInsuredType("1");//客户类型 个人
        insuredTmp.setIdentifyType("01");//证件类型身份证
        insuredTmp.setIdentifyNumber("410725199412015720");//证件号码
        //insuredTmp.setAddressName("河南省镇平县城关镇健康路73组593号");
        insuredTmp.setMobile("15516990860");//手机号
        request.setInsuredTmpArr(new InsuredTmp[]{insuredTmp});
        
        //暂存车辆信息 CarTmp
        CarTmp carTmp = new CarTmp();
        /**
         * 是否已上牌	NewCarFlag	VARCHAR2(2)	Y	1-是，0-否
是否外地车	EcdemicFlag	VARCHAR2(2)	Y	1-是，0-否
号牌号码	LicenseNo	VARCHAR2(30)	Y	
号牌种类代码	LicenseKindCode	VARCHAR2(2)	Y	码表

号牌底色	LicenseColorCode	VARCHAR2(2)	N	码表

车辆种类	CarKindCode	VARCHAR2(2)	Y	码表

车辆使用性质	UseNatureCode	VARCHAR2(2)	Y	码表

行驶证车辆类型	VehicleStyle	VARCHAR2(4)	Y	码表清单

车辆类型描述	VehicleStyleDesc	VARCHAR2(100)	N	
行驶证车型	RegistModelCode	VARCHAR2(60)	N	深圳使用
车型代码	ModelCode	VARCHAR2(14)	Y	精友车型代码
产地种类	ImportFlag	VARCHAR2(10)	N	码表

厂牌型号	BrandName	VARCHAR2(100)	Y	
车辆品牌	VehicleBrand	VARCHAR2(64)	Y	
车架号	FrameNo	VARCHAR2(30)	Y	
发动机号	EngineNo	VARCHAR2(30)	Y	
VIN码	Vin	VARCHAR2(18)	N	
整备质量	WholeWeight	NUMBER(14,4)	N	单位：千克
核定载客	SeatCount	NUMBER(15)	Y	单位：座
核定载质量	TonCount	NUMBER(12,4)	N	单位：吨
排量/功率	ExhaustScale	NUMBER(8,4)	Y	L/KW
车身颜色	ColorCode	VARCHAR2(6)	N	码表

初次登记日期	EnrollDate	VARCHAR2(10)	Y	YYYY-MM-DD
车龄	UseYears	NUMBER(15)	Y	实际使用年数
总行驶里程	RunMilers	NUMBER(14,2)	N	
新车购置价	PurchasePrice	NUMBER(14,2)	Y	
车辆实际价值	ActualValue	NUMBER(14,2)	N	服务端计算
过户车标志	TransferFlag	VARCHAR2(2)	N	1-是，0-否
过户登记日期	TransferDate	VARCHAR2(20)	N	
是否二手车	SecondHandCarFlag	VARCHAR2(2)	N	1-是，0-否
是否忠诚客户	OtherNature2	VARCHAR2(2)	N	1-是，0或空-否
是否车贷投保多年标识	LoanVehicleFlag	VARCHAR2(2)	N	1-是，0-否
交通违章记录标识	AddonCount	VARCHAR2(2)	N	1-无，2-有
按赔款次数确定费率等级标识	DamagedFactorGrade	VARCHAR2(1)	N	
车辆来历凭证种类	CertificateType	VARCHAR2(2)	N	码表

车辆来历凭证编号	CertificateNo	VARCHAR2(50)	N	
开具车辆来历凭证所载日期	CertificateDate	VARCHAR2(10)	N	
发证日期	CertifyDate	VARCHAR2(10)	N	
购买日期	CarBuyDate	VARCHAR2(10)	N	
行驶区域代码	AreaCode	VARCHAR2(10)	Y	码表

行驶区域名称	AreaName	VARCHAR2(60)	Y	码表

跨省首年投保未出险年数	NoDamageYears	NUMBER(2)	N	
特殊车辆种类标识	SpecialCarFlag	VARCHAR2 (1)	N	码表清单

交强险费率浮动类型	FloatingType	VARCHAR2 (2)	N	码表清单

车辆所有关系	CarInsureRelation	VARCHAR2(1)	N	1-所有，2-使用，3-管理
验车情况	CarCheckStatus	VARCHAR2(2)	N	码表

验车责任人	CarChecker	VARCHAR2(60)	N	
验车时间	CarCheckDate	VARCHAR2(30)	N	

         */
      //暂存车辆信息 CarTmp
        carTmp.setLicenseNo("豫GSD122");//号牌号码
        carTmp.setLicenseKindCode("02");//号牌种类代码  小型汽车号牌
        carTmp.setCarKindCode("A0");//车辆种类  客车
        carTmp.setUseNatureCode("8A");//车辆使用性质
        carTmp.setVehicleStyle("K31");//行驶证车辆类型
        carTmp.setModelCode("7");//精友车型代码。。。在车型信息中?
        carTmp.setBrandName("大众汽车SVW71411HR轿车");//厂牌型号？
        carTmp.setVehicleBrand("大众汽车");//车辆品牌？
        carTmp.setFrameNo("LSVGY26R0F2159877");//车架号
        carTmp.setEngineNo("149357");//发动机号
        //carTmp.setVin("LDCC53T4XG1523721");//这个必须问 VIN码
        carTmp.setSeatCount(5);//核定载客。。。车型信息中出参
        carTmp.setExhaustScale(1600);//排量/功率 。。。车型信息中出参
        carTmp.setEnrollDate("2016-05-11");//初次登记日期
        carTmp.setPurchasePrice(11.98);//新车购置价。。。车型信息中出参
        carTmp.setAreaCode("04");//行驶区域代码
        carTmp.setAreaName("中国境内(不含港澳台)");//行驶区域名称
        request.setCarTmp(carTmp);
        
        //暂存险别信息 ItemKindTmp
        ItemKindTmp itemKindTmp = new ItemKindTmp();
        itemKindTmp.setKindCode("001");//险别代码
        itemKindTmp.setKindName("机动车损失保险");//险别名称
        itemKindTmp.setRiskCode("0511");//险种代码   机动车综合商业保险
        itemKindTmp.setAmount(100000.0);//保险金额？  通过费改保费计算得出二次返写
        itemKindTmp.setPremium(2735.3);//实缴保费？是否包含交强险， 通过费改保费计算得出
        request.setItemKindTmpArr(new ItemKindTmp[]{itemKindTmp});
        
        //暂存车船税信息 CarShipTaxTmp
        CarShipTaxTmp carShipTaxTmp = new CarShipTaxTmp();
        carShipTaxTmp.setTaxRelifFlag("1N");//车船税标志
        carShipTaxTmp.setTaxpayerName("吴静菡");//纳税人名称
        request.setCarShipTaxTmp(carShipTaxTmp);
        
        //暂存新增设备信息列表 CarDeviceTmpArr
        CarDeviceTmp carDeviceTmp = new CarDeviceTmp();
        carDeviceTmp.setDeviceName("小型轿车");//新增设备名称？怎么填，啥是设备
        carDeviceTmp.setActualValue(52226.3);//设备实际价值？是车辆实际价值么
        request.setCarDeviceTmpArr(new CarDeviceTmp[]{carDeviceTmp});
        
        //暂存指定驾驶员信息 CarDriverTmp
        CarDriverTmp carDriverTmp = new CarDriverTmp();
        carDriverTmp.setDriverName("吴静菡");//姓名
        carDriverTmp.setIdentifyNumber("74446222131");//驾驶证号码？
        carDriverTmp.setAcceptLicenseDate("2016-09-21");//初次领证日期？
        carDriverTmp.setCarDriverFlag("1");//主驾从驾标识 1-主驾，0-从驾
        request.setCarDriverTmpArr(new CarDriverTmp[]{carDriverTmp});
		// 入口参数

		// ProvisonalStatusQueryService service=new
		// ProvisonalStatusQueryServiceLocator();
		// java.net.URL url = new
		// java.net.URL("http://proxy.tuxing51.com/frontServiceCenter/services/ProvisonalStatusQueryService?wsdl");
		// ProvisonalStatusQueryServiceSoap11BindingStub stub = new
		// ProvisonalStatusQueryServiceSoap11BindingStub(url, service);
		// ProvisonalStatusResponse response =
		// stub.queryProvisonalStatus(request);

        //connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //request.set
		ProvisionalTmpSaveResponse response = portType.saveProvisionalTmp(request);
		System.out.println(response.getTxInsuranceResponseEhm()
				.getTransResultEhm().getResultCode());
		System.out.println(response.getTxInsuranceResponseEhm()
				.getTransResultEhm().getResultInfoDesc());
		System.out.println(response.getTxInsuranceResponseEhm()
				.getTransResultEhm().getErrorNo());

		// 获取返回信息

	}

}
